热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

工匠|上文_SpringCloudAlibaba14OpenFeign自定义配置+调用优化+超时时间

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudAlibaba-14OpenFeign自定义配置+调用优化+超时时间相关的知识,希望对你有一定的参考价值

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring Cloud Alibaba - 14 OpenFeign自定义配置 + 调用优化 + 超时时间相关的知识,希望对你有一定的参考价值。



文章目录


  • 打印Feign调用日志
    • 日志级别
    • 三部曲
      • step1 添加Feign的自定义配置
      • step2 声明式接口指定配置
      • Step3 声明式接口包日志级别调整为DEBUG

    • 验证

  • 基于yml文件细粒度配置日志
    • 调用方配置yml
    • 验证

  • 使用Feign原生的注解配置
  • 拦截器的应用配置
  • Feign调用优化方案
    • Step 1 开启连接池配置
    • Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)

  • Feign的生产实践 (Feign的超时为准)
    • 服务方模拟响应过长
    • 超时设置
    • 验证

  • 源码




打印Feign调用日志

默认情况下,Feign的调用式不打印日志,我们需要通过自定义来打印我们的Feign的日志, 生产环境推荐basic


日志级别


级别输出内容
NONE(默认)不记录任何信息
BASIC仅记录请求方法、URL、响应状态和执行时间
HEADERS在BASIC基础上,记录请求和响应的HEADER
FULL记录请求和响应的HEADER、BODY和元数据



三部曲


step1 添加Feign的自定义配置

子模块 artisan-feign-api 增加 配置

import feign.Logger;
import org.springframework.context.annotation.Bean;
/**
* @author 小工匠
* @version 1.0
* @description: 千万不要添加@Configuration,不然会被作为全局配置文件共享
* @date 2022/2/3 22:19
* @mark: show me the code , change the world
*/

public class ProductCenterFeignConfig
@Bean
public Logger.Level level()
return Logger.Level.BASIC;



千万不要添加@Configuration,不然会被作为全局配置文件共享




step2 声明式接口指定配置

子模块 artisan-feign-api


Step3 声明式接口包日志级别调整为DEBUG

接口调用方 artisan-cloud-feign-order 的 application.yml

# 子模块下的声明式接口包 日志级别必须是debug ,不然不打印日志
logging:
level:
com:
artisan:
feignapi: debug




验证

启动两个服务,访问 http://localhost:8080/selectOrderInfoById/1

观察order的日志




基于yml文件细粒度配置日志

调用方配置yml

在调用方artisan-cloud-feign-order ,通过feign:client:config:微服务名称:loggerLevel: 日志级别来指定

# 基于yml文件细粒度配置 - 通过feign:client:config:微服务名称:loggerLevel日志级别来指定
feign:
client:
config:
artisan-product-center:
loggerLevel: full

支持配置多个

我们再来个 artisan-cloud-feign-pay 服务验证下




验证

启动服务,分别访问接口,观察日志




使用Feign原生的注解配置

根据自动装配我们FeignClients的配置中的默认锲约是springmvc , 如果需要修改的话,修改契约即可(使用Feign原生的API)

用的较少, 这里就不演示了。




拦截器的应用配置

Spring Cloud Alibaba - 15 微服务之间使用Feign实现参数的透传




Feign调用优化方案

Step 1 开启连接池配置


Step 2 调整Feign的日志级别(强烈推荐使用Basic级别的)

方法见上文




Feign的生产实践 (Feign的超时为准)

Feign的底层用的是Ribbon,那么我们怎么配置超时时间呢?

我们来测试下


服务方模拟响应过长




超时设置




验证

那如果我们换一下呢 (Ribbon 设置 5秒, Feign设置2秒 , Product仍然休眠3秒) 。看下什么情况

测试一下看看呢




源码

https://github.com/yangshangwei/SpringCloudAlibabMaster


推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 学习笔记(34):第三阶段4.2.6:SpringCloud Config配置中心的应用与原理第三阶段4.2.6SpringCloud Config配置中心的应用与原理
    立即学习:https:edu.csdn.netcourseplay29983432482?utm_sourceblogtoedu配置中心得核心逻辑springcloudconfi ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
author-avatar
蔡佩琬62777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有